1. Technical Field
The present invention relates generally to managing I/O resources in a virtualized computer system, and in particular to an I/O request processing architecture implemented in a virtualized computing environment.
2. Description of the Related Art
Logical partitioning of computer resources allows the establishment of multiple system images on a single physical machine or processor complex. Virtualization is a term designating system imaging in which each system image, known also as a virtual machine (VM), operates in a logically independent manner from the other VMs using logically partitioned resources of the physical computer system. In this manner, each logical partition corresponding to a VM can be independently reset, loaded with an operating system that may be different for each VM, and operate with different software programs using different input/output (I/O) devices. Platform virtualization, or simply “virtualization,” is a process or technique that presents a hardware platform to a VM.
Advances in computer system technology relating to high-capacity storage and access applications has resulted in increased platform specialization and performance. Such advances have also lead to a proliferation of specialized systems in high-capacity server implementations such as utilized for data centers. The physical system resources required to support high-capacity data centers are costly in terms of power consumption and other environmental loading, IT management issues such as storage management and physical server management complications. Virtualization addresses these issues by allowing physical platforms to be shared by multiple, disparate, discrete applications. Virtualization of the physical server platform, CPU, memory, and I/O sub-systems has therefore become standard in high-capacity data processing systems.
Sharing of physical system resources often results in over-subscription by the multiple virtualized entities which may contribute to an underutilization of the underlying physical system resources. In particular, virtualization often causes an over-subscription of the I/O sub-systems by the supported VMs, resulting in degraded per-VM and system-wide throughput performance as well as decreased scale-out capability of the host platform in spite of increased host platform physical resource capacity. Symptoms of I/O over-subscription include lower processor utilization by applications with sluggish response time and high latencies. These symptoms are attributable to increased I/O request processing path length which compounds the I/O bottleneck resulting from the shared I/O access architecture of the host system.
In prior systems, I/O over-subscription has been managed through increased concurrency by adding additional physical storage devices and increasing shared accessibility thereto through the use of multi-channel controllers. Additional I/O access improvement measures such as may be employed by Storage-Array-Networking (SAN) systems include increases in storage density, increases in rotational speed of storage devices, and/or increases in I/O channel bandwidth and multiple channels with caching. While these techniques have marginally kept pace with the growing demand for improved VM application performance on physical platforms, platform virtualization introduces several design and performance issues that are presently inadequately addressed by conventional I/O architectures.
It can therefore be appreciated that a need exists for I/O request handling systems and methods that address the issues presented by platform virtualization. The present invention addresses this and other needs unresolved by the prior art.